草庐IT

Android AsyncTask 内存泄漏

全部标签

windows - 系统如何定义进程获得的虚拟内存部分?

如果是32位系统(假设是Windows),虚拟地址空间是4GB。所以CPU可以生成这个范围内的任何地址。那么一个进程不应该也能够解决这个范围内的任何地方吗?据说每个进程都有自己私有(private)的虚拟地址空间。那么系统是如何实现的呢?换句话说,CPU生成一个32位地址,然后将其转换为物理地址。现在CPU如何知道一个特定的进程只需要处理虚拟地址空间的特定部分(它的私有(private)虚拟地址空间)。假设一个进程在其私有(private)虚拟地址空间之外寻址一个地址,会发生什么? 最佳答案 程序必须在Windows上调用Virtu

c++ - 您是否需要担心重启时清理内存

我有一个C++应用程序在运行Windows7Embedded的嵌入式系统上运行。在这个应用程序中,我可以向批处理文件发送一个命令,它可以重新启动整个系统(最终强制关闭应用程序)。我是否需要担心在重新启动系统之前释放内存?这不就和用户关闭系统电源一样吗?我的系统启用了EWF,因此,重新启动意味着“将我的更改提交到系统”...通过调用ewfmgrc:-commit。然后运行​​shutdown-r 最佳答案 不,不一定。这完全取决于“重新启动”对您和您的操作系统意味着什么。一般而言,如果您想完全安全,请进行电源循环。当然,在实践中,隔离

c++ - 如何在 C++ 中将加载到内存中的图像文件转换为 ID2D1Bitmap

我正在尝试将刚刚从压缩文件提取到内存中的图像文件(png,但可以是任何文件)转换为ID2D1Bitmap,以便使用Direct2D进行绘制。我试图寻找一些文档,但我只能找到接收“constchar*路径”的方法或询问我图像的宽度和高度,我事先不知道。在谷歌上搜索它让我一无所获。该文件在内存中是原始文件,我想避免将图像提取到硬盘到一个临时文件中,只是为了从那里读取数据。有什么想法吗? 最佳答案 如果你有HBITMAP句柄,你可以这样做:图像的大小使用:::GetObject(hBmp,sizeof(BITMAP),&bmpSizeIn

windows - 为意外停止的 Windows 服务生成内存转储

如何为意外停止的Windows服务生成内存转储? 最佳答案 1)下载ProcDump2)在管理员命令提示符下,在与procdump相同的目录中,键入:procdump-ma-e.exe3)等待crash并生成dump 关于windows-为意外停止的Windows服务生成内存转储,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/27704301/

c - 为什么内存对齐会在结构内发生变化?

在previousquestion中,我learned当一个具有8字节对齐的结构嵌入另一个具有4字节对齐的结构时,需要在8字节对齐的结构之前进行填充。明白了。至少我认为我理解了。VS2012docs说:Forstructures,unions,andarrays,thealignment-requirementisthelargestalignment-requirementofitsmembers.所以,如果我有这样的结构:typedefstructs_inner{unsignedlongul1;doubledbl1;fourth_structs4;unsignedlongul2;i

c - 是否可以将二进制文件加载到内存中并在Windows中执行

我正在尝试编写一个程序来从内存中读取二进制文件执行它并退出但是操作系统似乎不允许我从内存中执行它,这个练习的全部目的是加载一个二进制文件没有头进入内存。这是我的二进制文件代码:pusheaxmoveax,3movedi,eaxsubeax,edipopeaxleaveret而我的loader如下:intmain(intargc,char**argv){void(*ptr)(void);FILE*fo=fopen(argv[1],"r");intl=fseek(fo,0,SEEK_END);fread((void*)ptr,l*sizeof(char),1,fo);ptr();retur

c# - 64 位 Windows 可以分配超过 7FFF'FFFF'FFFF 的虚拟内存吗?

上下文我正在努力升级.NET库以支持64位。该库直接在Windows上其他进程的内存中执行各种操作。我必须在IntPtr(最大正值7FFF'FFFF'FFFF'FFFF)或UIntPtr(最大正值FFFF'FFFF'FFFF'FFFF)两种类型之间进行选择处理我的内存指针。网上关于这两者的资料很多。IntPtr似乎是事实上同意的选择,因为它符合CLS并且大多数.NETAPI都依赖它(引用Marshal来自InteropServices).问题我决定打开一个64位进程并检查分配的内存区域,以及进程中加载​​的模块,看看使用UIntPtr支持无符号指针是否有值(value)(地址>7FFF

windows - 这段汇编代码在做什么 - 写入进程内存

编辑/更新所以我认为让我感到困惑的是:LEAESI,[EBX+8*EAX+4]加载一个地址,但是:LEAESI,[EBX+4]加载内容(值?)而不是地址。这怎么不是取消引用?我也不知道是什么mov[eax+1],ecx是吗?原始问题我正在努力学习阅读汇编,但我开始挣扎了。抱歉,如果有拼写错误,我无法从我的实验室机器上复制。这是来自恶意代码,因此它可能不是最佳的。我想我在某处理解有缺陷,但我就是想不通。var_30=byteptr-30hleaeax,[ebp+esi+var_30]我的理解是,加载有效地址将成为从[basepointer-30h+esi]计算出的任何地址。我不知道esi

windows - 内存相关术语的含义?

在delphi中玩内存分析时,虽然它适用于任何语言,但我发现了一些关于已用内存的术语,但我并不完全理解。有人可以解释(或引用好的文档或手册)以下术语的含义吗?工作集大小使用的页面文件坚定的内存未提交的内存私有(private)使用(来自PROCESS_MEMORY_COUNTERS_EX结构)分页池非分页池总地址空间(来自delphi内存管理器中的THeapStatus)TotalAllocated(来自delphi内存管理器中的THeapStatus)msdn有一个briefdescriptionofeachfield但它们含义的复杂性超出了我的范围。比如,每个部分什么时候增长?它们

c - 在 Windows 上查找 C 代码中的内存泄漏

我已经知道我可以在Linux上使用mtrace和valgrind跟踪我的代码中的内存泄漏,这两者在Windows上都不可用。您会推荐哪个Windows程序来跟踪内存泄漏?我是Eclipse用户,现在我已经使用C语言一两个月了,所以我更喜欢用户友好的解决方案,而不是更高级的解决方案。 最佳答案 ApplicationVerifier会做得很好,http://msdn.microsoft.com/en-us/library/ms220948.aspx 关于c-在Windows上查找C代码中的